import * as Cesium from 'cesium'
Cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI1ZDA3ODBjMC03MTYxLTRiYTktODg5OC1hY2Y0MDViNGE2NTkiLCJpZCI6MjQ5NjQxLCJpYXQiOjE3Mjk1MDk0OTN9.QTQJtpDYMteKf76yoSfOUuLtbHEGBffj8WaWnOkSeEo'
export const initViewer = () => {
  return new Promise(async (resolve, reject) => {
    const viewer = new Cesium.Viewer("cesiumContainer", { 
        terrainProvider: await Cesium.createWorldTerrainAsync({
          requestWaterMask: true,
          requestVertexNormals: true
        }),
        baseLayerPicker: false, // 如果设置为false，将不会创建右上角图层按钮。
        // geocoder: false, // 如果设置为false，将不会创建右上角查询(放大镜)按钮。
        navigationHelpButton: false, // 如果设置为false，则不会创建右上角帮助(问号)按钮。
        homeButton: false, // 如果设置为false，将不会创建右上角主页(房子)按钮。
        sceneModePicker: false, // 如果设置为false，将不会创建右上角投影方式控件(显示二三维切换按钮)。
        animation: false, // 如果设置为false，将不会创建左下角动画小部件。
        timeline: false, // 如果设置为false，则不会创建正下方时间轴小部件。
        fullscreenButton: false, // 如果设置为false，将不会创建右下角全屏按钮。
        scene3DOnly: true, // 为 true 时，每个几何实例将仅以3D渲染以节省GPU内存。
        infoBox: false, // 是否显示点击要素之后显示的信息
        shouldAnimate: true, // 默认true ，否则为 false 。此选项优先于设置 Viewer＃clockViewModel 。
        sceneMode: 3, // 初始场景模式 1 2D模式 2 2D循环模式 3 3D模式  Cesium.SceneMode
        requestRenderMode: false, // 启用请求渲染模式，不需要渲染，节约资源吧
        fullscreenElement: document.body, // 全屏时渲染的HTML元素 暂时没发现用处，虽然我关闭了全屏按钮，但是键盘按F11 浏览器也还是会进入全屏
      });
      viewer.scene.globe.enableLighting = true;
      // 隐藏Cesium的logo
      viewer._cesiumWidget._creditContainer.style.display = "none";

      // 监听点击事件，拾取坐标
      const handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
      handler.setInputAction((e:any) => {
        const clickPosition = viewer.scene.camera.pickEllipsoid(e.position);
        const randiansPos = Cesium.Cartographic.fromCartesian(clickPosition);
        console.log( "经度：" + Cesium.Math.toDegrees(randiansPos.longitude) + ", 纬度：" + Cesium.Math.toDegrees(randiansPos.latitude));
      }, Cesium.ScreenSpaceEventType.LEFT_CLICK);

      resolve(viewer)
  })
}